【Java可执行命令】(九)安装包创建工具 javapackager:使用 JavaPackager 工具打包和部署自包含的 Java 应用程序,支持各种选项来指定相关配置~ 您所在的位置:网站首页 开发工具箱 进程 窗口 【Java可执行命令】(九)安装包创建工具 javapackager:使用 JavaPackager 工具打包和部署自包含的 Java 应用程序,支持各种选项来指定相关配置~

【Java可执行命令】(九)安装包创建工具 javapackager:使用 JavaPackager 工具打包和部署自包含的 Java 应用程序,支持各种选项来指定相关配置~

2024-07-12 02:39| 来源: 网络整理| 查看: 265

Java可执行命令之javapackager 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 javapackager -createjar3.3 javapackager -deploy3.4 javapackager -createbss3.5 javapackager -signJar 4️⃣ 应用场景🌾 总结

在这里插入图片描述

1️⃣ 概念

javapackager命令是Java开发工具箱提供的一个工具,旨在将Java应用程序打包成可执行或安装文件,使其能够在目标操作系统上以独立的方式运行。该命令的设计目的是简化Java应用程序的部署和分发过程,并提供了灵活性和定制化选项。

javapackager命令底层使用了JavaFX的相关库,在创建可执行文件或安装程序时,它会将所需的Java运行时环境(JRE)和应用程序捆绑在一起,并生成适用于特定操作系统上的可执行文件。

其特征如下:

可执行文件生成:javapackager命令能够生成各种操作系统上的可执行文件,如Windows上的exe或者app文件;自动依赖解析:此命令会自动解析并处理应用程序所依赖的所有JAR文件和类路径;资源捆绑:通过提供资源目录或JAR文件列表,可以轻松地将资源文件捆绑到生成的安装文件中。 2️⃣ 优势和缺点

优点:

简化部署:javapackager命令可以将Java应用程序打包成独立的可执行文件或安装器,用户可以方便地安装和运行应用程序;跨平台:生成的安装文件适用于不同操作系统(如Windows、Mac和Linux),无需重新编译或调整代码;定制化选项:该命令提供了一系列选项,允许开发人员自定义打包过程,以满足特定需求。

缺点:

学习曲线:javapackager命令具有复杂的语法和概念,学习和掌握它可能需要一定的时间和精力;依赖管理:打包后的应用程序可能会增加文件大小,因为它需要包含整个Java运行时环境。这可能会导致部署的文件变得较大。 3️⃣ 使用 3.1 语法格式

用法:

javapackager -command [-options]

其中 command 为以下项之一:

命令说明-createjar打包程序根据其他参数生成 jar 档案-deploy打包程序根据其他参数生成 jnlp 和 html 文件 -createbss将 css 文件转换为二进制形式-signJar使用提供的证书为 jar 文件签名-makeall将 compilation, createjar 和 deploy 步骤作为一个调用执行,在其中预定义大多数参数。源必须位于 "src"文件夹中, 生成的文件 (jar, jnlp, html) 将放入 "dist"文件夹中。此命令只能以最简单方式配置, 并且尽可能自动进行

下面是对这五个选项的主要作用和区别进行详细解释:

javapackager -createjar:此选项用于根据提供的参数生成JAR(Java Archive)文件,可将应用程序的编译后的类文件、资源文件和其他依赖项打包到JAR中。该命令适用于创建自包含的可执行JAR文件;

javapackager -deploy:此选项用于根据提供的参数生成Java Network Launch Protocol (JNLP) 和HTML文件,以便将Java应用程序部署为通过Java Web Start启动的Web应用。它允许将Java应用程序打包成自包含的安装器,并生成启动Web应用所需的部署文件;

javapackager -createbss:此选项用于将CSS(Cascading Style Sheets)文件转换为二进制形式(BSS)。将CSS文件转换为BSS可以防止未经授权的查看和修改样式表,提供更高的安全性;

javapackager -signJar:此选项用于使用提供的证书为JAR文件进行数字签名,数字签名可确保文件的完整性、认证和防篡改。签名JAR文件可以提供更高的安全性,并验证文件是否来自受信任的来源;

javapackager -makeall:将 compilation, createjar 和 deploy 步骤作为一个调用执行,在其中预定义大多数参数。源必须位于 "src"文件夹中, 生成的文件 (jar, jnlp, html) 将放入 "dist"文件夹中,此命令只能以最简单方式配置, 并且尽可能自动进行。

其中,使用-makeall选项时,需要提供各种参数,包括应用程序的入口点、依赖项、资源文件、图标、平台特定设置等。这个命令将根据这些参数来生成适合特定平台的自包含安装程序,可以在用户的计算机上进行安装和运行。 但需要注意的是,javapackager -makeall现在已被废弃,并且在最新的JDK中不再可用。从Java 11开始,Oracle宣布停止支持该工具,并建议使用第三方工具进行应用程序打包和部署,例如GraalVM的Native Image或Apache Maven插件。

综上所述,javapackager工具提供了用于打包和部署Java应用程序的多种选项。 -createjar用于生成可执行JAR文件,-deploy用于生成部署文件以进行Web部署,-createbss用于将CSS文件转换为二进制形式, -signJar用于为JAR文件进行数字签名。每个选项都有其独特的作用和用途,可以根据应用程序需求选择合适的选项来实现所需的功能。

3.2 javapackager -createjar

用法:

javapackager -createjar [-options]

其中,options 是可选参数,将 javapackager -createjar 命令支持的所有可选参数汇总如下表:

参数说明-appclass 要执行的应用程序类的限定名称-preloader 要执行的预加载器类的限定名称-paramfile 包含默认命名应用程序参数的属性文件-argument argJNLP 文件的 元素中要放入的未命名 参数-classpath 相关 jar 文件名列表-manifestAttrs 附加清单属性列表。语法: “name1=value1, name2=value2,name3=value3”-noembedlauncher如果存在, 打包程序将不会向 jarfile 添加 JavaFX 启动程序类-nocss2bin在复制到 jar 之前, 打包程序不会将 CSS 文件转换为 二进制形式-runtimeversion 所需 JavaFX 运行时的版本-outdir 要将输出文件生成到的目录的名称-outfile 生成的文件的名称 (不带扩展名)-srcdir 待打包文件的基目录-srcfiles srcdir 中的文件的列表。如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包

以下步骤演示了如何使用该命令:

现在要把一个Java应用程序里的两个文件: HelloWorld.java 和 utils/StringUtils.java,通过 javapackager -createjar命令将这两个文件打包到一个JAR文件中。

在命令行终端中,进入保存Java源代码的目录。使用以下命令编译Java源代码: javac HelloWorld.java utils/StringUtils.java 创建一个名为 manifest.txt 的文本文件,指定应用程序的入口点。内容如下: Main-Class: HelloWorld 使用以下命令将文件打包为JAR文件: javapackager -createjar -srcdir . -outfile MyApp.jar -appclass HelloWorld -srcfiles HelloWorld.class utils/StringUtils.class -manifest manifest.txt

在上面命令中,我使用了参数 -srcdir 和 -srcfiles 分别指定了源代码所在的目录以及要打包的源文件列表,然后 -outfile 指定输出的JAR文件名为 MyApp.jar,-appclass 指定了应用程序的主类为 HelloWorld,而-manifest 指定用于配置JAR文件的清单文件。

成功执行上述命令后,将在当前目录下创建一个名为 MyApp.jar 的JAR文件。该JAR文件将包含 HelloWorld.class 和 utils/StringUtils.class 文件,并且可以通过 java -jar MyApp.jar 命令来运行应用程序。

3.3 javapackager -deploy

用法:

javapackager -deploy[-options]

其中,options 是可选参数,将 javapackager -deploy 命令支持的所有可选参数汇总如下表:

参数说明-title 应用程序的标题-vendor 应用程序的供应商-description 应用程序的说明-appclass 要执行的应用程序类的限定名称-preloader 要执行的预加载器类的限定名称-paramfile 包含默认命名应用程序参数的属性文件-htmlparamfile 包含所生成小应用程序参数的属性文件-width 应用程序的宽度-height 应用程序的高度-native 生成自包含的应用程序包 (如果可能),如果指定了类型,则只创建此类型的包 所支持类型的列表包括: installer, image, exe, msi, dmg, rpm 和 deb-name 应用程序的名称-embedjnlp如果存在, 会将 jnlp 文件嵌入 html 文档中-embedCertificates如果存在, 会将证书嵌入 jnlp 文件中-allpermissions如果存在, 应用程序将需要 jnlp 文件中的所有 安全权限-updatemode 设置 jnlp 文件的更新模式-isExtension如果存在, srcfile 将被视为扩展-callbacks在生成的 HTML 中指定用户回调方法 格式为 “name1:value1,name2:value2,…”-templateInFilename html 模板文件的名称 占位符格式为 #XXXX.YYYY(APPID)#-templateOutFilename要将已填充的模板写入到的 html 文件的名称-templateId用于模板处理的应用程序的应用程序 ID-argument argJNLP 文件的 元素中要放入的未命名 参数-outdir 要将输出文件生成到的目录的名称-outfile 生成的文件的名称 (不带扩展名)-srcdir 待打包文件的基目录-srcfiles srcdir 中的文件的列表 如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包

以下步骤演示了如何使用该命令来创建一个Java应用程序的部署文件:

javapackager -deploy -native -outdir . -outfile MyApplication -srcdir . -srcfiles MyApp.jar -appclass com.example.MyApp -name "My Application" -title "My Application"

在上面命令中,我使用了参数 -native 表示生成本地包装(本机安装程序),以便在特定平台上进行部署; 并通过 -outdir 和 -outfile 来指定输出目录(也即部署文件的保存位置)和输出文件的名称(不包含文件扩展名); 通过 -srcdir 和 -srcfiles 来指定应用程序源代码所在的目录以及要打包的源文件列表; 然后使用了 -appclass 指定应用程序的主类,-name 指定了应用程序的名称,-title 指定了应用程序的标题。

成功执行上述命令后,将在当前目录中生成一个部署文件,通常是一个jnlp(Java Network Launch Protocol)文件和相关资源文件,可以通过Web浏览器启动Java应用程序。

3.4 javapackager -createbss

用法:

javapackager -createbss [-options]

其中,options 是可选参数,将 javapackager -createbss 命令支持的所有可选参数汇总如下表:

参数说明-outdir 要将输出文件生成到的目录的名称-srcdir 待打包文件的基目录-srcfiles srcdir 中的文件的列表。如果省略, 将对 srcdir (在这种情况下是必需的参数) 中的所有文件进行打包

需要注意的是,javapackager -createbss是在较早的JDK版本中提供的打包和部署工具,并且随着时间的推移,它已经被废弃并从较新的JDK版本中删除。

而对于将CSS文件转换为二进制形式(BSS)的需求,可以使用其他工具或编程语言来实现这个目标。例如,可以使用Java代码读取CSS文件内容,并使用Base64等算法将其转换为二进制字符串。然后,将这个二进制字符串保存到文件中或以其他形式使用它。

3.5 javapackager -signJar

javapackager -signJar 命令用于对 JAR 文件进行签名,以在发布和分发 Java 应用程序时提供身份验证和完整性保护。用法:

javapackager -signJar[-options]

其中,options 是可选参数,将 javapackager -signJar 命令支持的所有可选参数汇总如下表:

参数说明-keyStore 密钥库文件名-alias密钥的别名-storePass用于检查密钥库完整性或对密钥库取消锁定的口令-keyPass用于恢复密钥的口令-storeType密钥库类型, 默认值为 “jks”-outdir 要将输出文件生成到的目录的名称-srcdir 待签名文件的基目录-srcfiles srcdir 中的文件的列表。如果省略, 将对 srcdir (在 这种情况下是必需的参数) 中的所有文件进行打包

以下步骤演示了该命令的使用及作用:

javapackager -signJar -keystore mykeystore.jks -storepass mypassword -alias myalias -keypass mykeypassword -srcfiles MyApp.jar

以上命令实现了对 MyApp.jar 的 JAR 文件进行数字签名。其中,通过 -keystore 指定了证书存储库(Keystore)文件的路径和名称; 通过 -storepass 指定了 Keystore 的密码;然后使用 -alias 和 -keypass 分别 指定要用于签名的密钥别名及其密码。

成功执行上述命令后,MyApp.jar 文件将被数字签名。这样其他人在验证 JAR 文件时可以通过读取签名和时间戳来确认其合法性和完整性。

证书生成和管理可以使用 Java 自带的 keytool 工具,此工具将在后面的文章中介绍。

4️⃣ 应用场景

javapackager命令适用于以下场景:

分发Java应用程序时,将其打包成可执行文件或安装程序;需要将Java应用程序进行部署,并使其能够在目标操作系统上独立运行。

需要注意的是,在使用javapackager命令之前,确保安装了适当版本的JDK(Java Development Kit)。 因为javapackager是在较早的JDK版本中提供的打包和部署工具,随着时间的推移,它已经被逐渐废弃并从较新的JDK版本中删除。

🌾 总结

javapackager是Java开发工具箱中的一个强大工具,通过它我们可以将Java应用程序打包成可执行文件或安装程序,从而简化部署过程并提供跨平台的支持。尽管具备一些学习曲线和文件大小的问题,但javapackager仍可为Java开发人员带来便利和灵活性。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有